from typing import List

class Solution:
    def letterCasePermutation(self, s: str) -> List[str]:
        """
        生成字符串的所有大小写排列组合
        
        参数:
            s: 输入字符串，包含字母和数字
        返回:
            所有可能的大小写排列组合列表
        """
        ans = []
        def dfs(s: List[str], pos: int) -> None:
            # 跳过数字字符
            while pos < len(s) and s[pos].isdigit():
                pos += 1
            # 到达字符串末尾，添加当前排列到结果中
            if pos == len(s):
                ans.append(''.join(s))
                return
            # 保持当前字符不变，继续递归
            dfs(s, pos + 1)
            # 转换当前字符大小写，继续递归
            s[pos] = s[pos].swapcase()
            dfs(s, pos + 1)
            # 回溯：恢复原始字符
            s[pos] = s[pos].swapcase()
        
        dfs(list(s), 0)
        return ans 